home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / bin / mergelib < prev    next >
Text File  |  2006-04-12  |  3KB  |  106 lines

  1. #!/bin/sh
  2. #
  3. # $Xorg: mergelib.cpp,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $
  4. # Copyright (c) 1989, 1998 The Open Group
  5. # Permission to use, copy, modify, distribute, and sell this software and 
  6. # its documentation for any purpose is hereby granted without fee, provided
  7. # that the above copyright notice appear in all copies and that both that
  8. # copyright notice and this permission notice appear in supporting
  9. # documentation.
  10. # The above copyright notice and this permission notice shall be included in
  11. # all copies or substantial portions of the Software.
  12. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  13. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  14. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
  15. # OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  16. # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  17. # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  18. # Except as contained in this notice, the name of The Open Group shall not be
  19. # used in advertising or otherwise to promote the sale, use or other dealings
  20. # in this Software without prior written authorization from The Open Group.
  21. # Author:  Jim Fulton, MIT X Consortium
  22. # mergelib - merge one library into another; this is commonly used by X
  23. #     to add the extension library into the base Xlib.
  24. #
  25.  
  26. usage="usage:  $0  to-library from-library [object-filename-prefix]"
  27. objprefix=_
  28.  
  29. case $# in
  30.     2) ;;
  31.     3) objprefix=$3 ;;
  32.     *) echo "$usage" 1>&2; exit 1 ;;
  33. esac
  34.  
  35. tolib=$1
  36. fromlib=$2
  37.  
  38. if [ ! -f $fromlib ]; then
  39.     echo "$0:  no such from-library $fromlib" 1>&2
  40.     exit 1
  41. fi
  42.  
  43. if [ ! -f $tolib ]; then
  44.     echo "$0:  no such to-library $tolib" 1>&2
  45.     exit 1
  46. fi
  47.  
  48.  
  49. #
  50. # Create a temp directory, and figure out how to reference the 
  51. # object files from it (i.e. relative vs. absolute path names).
  52. #
  53.  
  54. tmpdir=tmp.$$
  55. origdir=..
  56.  
  57. # Remove directory if we fail
  58. trap "rm -rf $tmpdir; exit 1" 1 2 15
  59. trap "rm -rf $tmpdir; exit 0" 1 2 13
  60.  
  61. mkdir $tmpdir
  62.  
  63. # Security: if $tmpdir exists before mkdir exit immediately
  64. if [ $? -gt 0 -o ! -d $tmpdir ]; then
  65.     echo "$0:  unable to create temporary directory $tmpdir" 1>&2
  66.     exit 1
  67. fi
  68.  
  69. case "$fromlib" in
  70.     /?*) upfrom= ;;
  71.     *)  upfrom=../ ;;
  72. esac
  73.  
  74. case "$tolib" in
  75.     /?*) upto= ;;
  76.     *)  upto=../ ;;
  77. esac
  78.  
  79.  
  80. #
  81. # In the temp directory, extract all of the object files and prefix
  82. # them with some symbol to avoid name clashes with the base library.
  83. #
  84. cd $tmpdir || exit 1
  85. ar x ${upfrom}$fromlib
  86. for i in *.o; do
  87.     mv $i ${objprefix}$i
  88. done
  89.  
  90.  
  91. #
  92. # Merge in the object modules, ranlib (if appropriate) and cleanup
  93. #
  94. ar clq ${upto}$tolib *.o
  95. ranlib ${upto}$tolib
  96. cd $origdir
  97. rm -rf $tmpdir
  98.  
  99.